package com.sky.business.sys.dto;

import com.sky.business.sys.domain.ContainerConfig;
import com.sky.common.enums.Arch;
import com.sky.common.enums.RestartPolicy;
import lombok.Data;

import java.util.Date;

/**
 * 容器配置dto
 */
@Data
public class ContainerConfigDto {
    /**
     * 主键id
     */
    private Integer id;

    /**
     * 版本
     */
    private Integer version;

    /**
     * 描述
     */
    private String description;

    /**
     * 镜像名称
     */
    private String imageName;

    /**
     * 镜像标签
     */
    private String imageTag;

    /**
     * 平台  amd64、arm64
     */
    private Arch imageArch;

    /**
     * 镜像大小,单位MB
     */
    private Integer imageSize;

    /**
     * 任务类型
     */
    private String taskType;

    /**
     * 共享内存,单位MB
     */
    private Integer sharedMemory;

    /**
     * 最大物理内存,单位MB
     */
    private Integer memory;

    /**
     * 交换内存,单位MB
     */
    private Integer swapMemory;

    /**
     * 内核内存,单位MB
     */
    private Integer kernelMemory;

    /**
     * 是否使用主机网络模式
     */
    private Boolean hostMode;

    /**
     * 重启策略
     */
    private RestartPolicy restartPolicy;

    /**
     * 运行时
     */
    private String runtime;

    /**
     * 是否需要gpu
     */
    private Boolean gpuSupport;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 是否删除
     */
    private Boolean isDel;

    /**
     * 转换为dto
     * @param containerConfig 容器配置
     * @return dto
     */
    public static  ContainerConfigDto valueOf(ContainerConfig containerConfig){
        ContainerConfigDto dto = new ContainerConfigDto();
        dto.setId(containerConfig.getId());
        dto.setVersion(containerConfig.getVersion());
        dto.setDescription(containerConfig.getDescription());
        dto.setImageName(containerConfig.getImageName());
        dto.setImageTag(containerConfig.getImageTag());
        dto.setImageArch(containerConfig.getImageArch());
        dto.setImageSize(containerConfig.getImageSize());
        dto.setTaskType(containerConfig.getTaskType().name());
        dto.setSharedMemory(containerConfig.getSharedMemory());
        dto.setMemory(containerConfig.getMemory());
        dto.setSwapMemory(containerConfig.getSwapMemory());
        dto.setKernelMemory(containerConfig.getKernelMemory());
        dto.setHostMode(containerConfig.getHostMode());
        dto.setRestartPolicy(containerConfig.getRestartPolicy());
        dto.setRuntime(containerConfig.getRuntime());
        dto.setGpuSupport(containerConfig.getGpuSupport());
        dto.setCreateTime(containerConfig.getCreateTime());
        dto.setUpdateTime(containerConfig.getUpdateTime());
        dto.setIsDel(containerConfig.getIsDel());
        return dto;
    }

}
